﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PatientList
{
    public class Limit
    {
        public uint getLimitLevel(PatientData aktuelleDaten)//Funktion berechnet die jeweiligen Scorepunkte der Messwerte, addiert sie und gibt die Kennzahl für den Patientenzustand zurück
        {
            //Variablen für die Scorepunktwerte, siehe Tabelle 1.0 Scorepunkte
            uint pulsScore = 0;//0 ist Standard - Scorepunkt = Puls in keinem gefährlichen Wertebereich
            uint blutdruckScore = 0;
            uint atemfrequenzScore = 0;
            uint sauerstoffsaettigungScore = 0;
            uint temperaturScore = 0;
            uint gesundheitsZustandScore = 0;
            uint zustand = 1;



            //........................................Scorepunktvergabe für den Puls..........................................




            //Scorepunkt Puls = 1 wenn..

            if (aktuelleDaten.Puls >= 40 && aktuelleDaten.Puls <= 50)
            {
                pulsScore = 1;
            }

            if (aktuelleDaten.Puls >= 101 && aktuelleDaten.Puls <= 111)
            {
                pulsScore = 1;
            }


            //Scorepunkt Puls = 2 wenn..

            if (aktuelleDaten.Puls > 111 && aktuelleDaten.Puls < 130)
            {
                pulsScore = 2;
            }

            if (aktuelleDaten.Puls < 40)
            {
                pulsScore = 2;
            }


            //Scorepunkt Puls = 3 wenn..

            if (aktuelleDaten.Puls >= 130)
            {
                pulsScore = 3;
            }



            //........................................Scorepunktvergabe für den Blutdruck..........................................




            //Scorepunkt Blutdruck = 1 wenn..

            if (aktuelleDaten.Blutdruck > 80 && aktuelleDaten.Blutdruck <= 100)
            {
                blutdruckScore = 1;
            }




            //Scorepunkt Blutdruck = 2 wenn..

            if (aktuelleDaten.Blutdruck >= 200)
            {
                blutdruckScore = 2;
            }


            if (aktuelleDaten.Blutdruck <= 80 && aktuelleDaten.Blutdruck > 70)
            {
                blutdruckScore = 2;
            }



            //Scorepunkt Blutdruck = 3 wenn..

            if (aktuelleDaten.Blutdruck <= 70)
            {
                blutdruckScore = 3;
            }


            //........................................Scorepunktvergabe für den Atemfrequenz..........................................






            //Scorepunkt Atemfrequenz = 2 wenn..

            if (aktuelleDaten.Atemfrequenz <= 8)
            {
                atemfrequenzScore = 2;
            }


            if (aktuelleDaten.Atemfrequenz >= 25 && aktuelleDaten.Atemfrequenz < 30)
            {
                atemfrequenzScore = 2;
            }



            //Scorepunkt Atemfrequenz = 3 wenn..

            if (aktuelleDaten.Atemfrequenz >= 30)
            {
                atemfrequenzScore = 3;
            }


            //........................................Scorepunktvergabe für den Sauerstoffsaettigung..........................................





            //Scorepunkt Sauerstoffsaettigung = 1 wenn..

            if (aktuelleDaten.Sauerstoffsaettigung > 90 && aktuelleDaten.Sauerstoffsaettigung <= 94)
            {
                sauerstoffsaettigungScore = 1;
            }





            //Scorepunkt Sauerstoffsaettigung = 2 wenn..

            if (aktuelleDaten.Sauerstoffsaettigung > 88 && aktuelleDaten.Sauerstoffsaettigung <= 90)
            {
                sauerstoffsaettigungScore = 2;
            }





            //Scorepunkt Sauerstoffsaettigung = 3 wenn..

            if (aktuelleDaten.Sauerstoffsaettigung <= 88)
            {
                sauerstoffsaettigungScore = 3;
            }




            //........................................Scorepunktvergabe für den Temperatur..........................................






            //Scorepunkt Temperatur = 1 wenn..

            if (aktuelleDaten.Temperatur >= 37.5f && aktuelleDaten.Temperatur < 38.5f)
            {
                temperaturScore = 1;
            }


            if (aktuelleDaten.Temperatur > 35.0f && aktuelleDaten.Temperatur <= 35.9f)
            {
                temperaturScore = 1;
            }



            //Scorepunkt Temperatur = 2 wenn..

            if (aktuelleDaten.Temperatur <= 35.0f || aktuelleDaten.Temperatur >= 38.5f)
            {
                temperaturScore = 2;
            }





            //........................................Berechnung Scorepunkt des Gesundheitszustandes..........................................

            gesundheitsZustandScore = pulsScore + blutdruckScore + atemfrequenzScore + sauerstoffsaettigungScore + temperaturScore;

            if (gesundheitsZustandScore < 2)
            {
                zustand = 1;//grün
            }
            if (gesundheitsZustandScore >= 2 && gesundheitsZustandScore < 4)
            {
                zustand = 2;//gelb
            }

            if (gesundheitsZustandScore >= 4 && gesundheitsZustandScore < 6)
            {
                zustand = 3;//orange
            }

            if (gesundheitsZustandScore >= 6)
            {
                zustand = 4;//rot
            }


            return zustand;//  1 = Grün  ////  2 = Gelb  ////  3 = Orange  ////  4 = Rot


        }//end of function 


    }//end of class
}
